﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PTTK_HTTT_06.BUS;

namespace PTTK_HTTT_06.GUI.LapDSYeuCanNguyenLieu
{
    public partial class MHLapBangYCNL : UserControl
    {
        public MHLapBangYCNL()
        {
            InitializeComponent();
        }

        public NHAN_VIEN nhanVien { get; set; }
        private YC_XUAT_NGUYEN_LIEU xuatNL = null;
        private List<CT_YC_XUAT_NGUYEN_LIEU> ctxNLList = null;

        #region MHLapbangYCNL_Load()
        private void MHLapBangYCNL_Load(object sender, EventArgs e)
        {
            //cài đặt ngày

            dtPickerNgayLap.MinDate = DateTime.Today;



            //tải danh sách nguyên liệu lên combobox
            TaiDanhSachNguyenLieu();
        }
        #endregion



        #region sự kiện trả ra thông báo lỗi
        public event EventHandler ThongBaoLoi;
        private void OnThongBaoLoi(string error)
        {
            EventHandler handler = ThongBaoLoi;
            if (handler != null) handler(error, EventArgs.Empty);
        }
        #endregion


        #region tải danh sách nguyên liệu
        private void TaiDanhSachNguyenLieu()
        {
            List<NGUYEN_LIEU> NLList = NGUYEN_LIEU.LayDanhSach();
            cbbNguyenLieu.Items.Clear();
            cbbNguyenLieu.DataSource = NLList;
            cbbNguyenLieu.ValueMember = "MaNguyenLieu";
            cbbNguyenLieu.DisplayMember = "TenNguyenLieu";

        }
        #endregion



        #region btnChonNL_Click()
        private void btnChonNL_Click(object sender, EventArgs e)
        {
            //kiếm tra dữ liệu
            if (cbbNguyenLieu.SelectedIndex < 0 || nbSoLuong.Value <= 0)
            {
                OnThongBaoLoi("Chưa chọn nguyên liệu hoặc số lượng nhỏ hơn 1");
                return;
            }
            else
            {
                OnThongBaoLoi("...");
            }


            if (ctxNLList == null)
                ctxNLList = new List<CT_YC_XUAT_NGUYEN_LIEU>();

            // lấy nguyên liệu được chọn
            NGUYEN_LIEU NLDuocChon = (cbbNguyenLieu.SelectedItem as NGUYEN_LIEU);

            //láy thông tin ra
            CT_YC_XUAT_NGUYEN_LIEU ctYCNL = new CT_YC_XUAT_NGUYEN_LIEU();

            ctYCNL.MaNL = NLDuocChon.MaNguyenLieu;
            ctYCNL.SoLuong = (int)nbSoLuong.Value;




            //kiểm tra đã tồn tại nguyên liệu chưa?
            if (ctxNLList.Where(a => a.MaNL == NLDuocChon.MaNguyenLieu).Count() > 0)
            {
                // xử lý xóa thằng trước
                ctxNLList.RemoveAll(a => a.MaNL == NLDuocChon.MaNguyenLieu);

                // chỉn trong gridview
                for (int i = 0; i < gViewChonNL.Rows.Count; i++)
                {
                    if (int.Parse(gViewChonNL.Rows[i].Cells[1].Value.ToString()) == ctYCNL.MaNL)
                        gViewChonNL.Rows[i].Cells[3].Value = ctYCNL.SoLuong.ToString();
                }
            }
            else
            {
                //thêm vào gridview các món đã được chọn
                int countRow = gViewChonNL.Rows.Count + 1;
                gViewChonNL.Rows.Add(countRow, NLDuocChon.MaNguyenLieu, NLDuocChon.TenNguyenLieu, (int)nbSoLuong.Value, "Hủy");

                //if is the odd, show color a different
                if (countRow % 2 != 0)
                    gViewChonNL.Rows[countRow - 1].DefaultCellStyle.BackColor = Color.Honeydew;
            }

            // thêm vào ctThucDon
            ctxNLList.Add(ctYCNL);

            //reset dữ liệu
            nbSoLuong.Value = 0;
        }
        #endregion



        #region gViewChonNL_CellClick()
        private void gViewChonNL_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 4)
            {
                //lấy thông tin ra
                int maNL = int.Parse(gViewChonNL.Rows[e.RowIndex].Cells[1].Value.ToString());


                //xóa đi
                ctxNLList.RemoveAll(a => a.MaNL == maNL);
                gViewChonNL.Rows.RemoveAt(e.RowIndex);

                //sắp xếp lại hiển thị
                for (int i = 0; i < gViewChonNL.Rows.Count; i++)
                {
                    gViewChonNL.Rows[i].Cells[0].Value = i + 1;

                    //thay đổi màu
                    if (i % 2 == 0)
                        gViewChonNL.Rows[i].DefaultCellStyle.BackColor = Color.Honeydew;
                    else
                        gViewChonNL.Rows[i].DefaultCellStyle.BackColor = Color.White;
                }
            }
        }
        #endregion

        #region btnLuuDSYC_Click()
        private void btnLuuDSYC_Click(object sender, EventArgs e)
        {
            try
            {
                OnThongBaoLoi("...");

                //báo lỗi nếu chưa chọn thực đơn
                if (ctxNLList == null || ctxNLList.Count <= 0)
                {
                    OnThongBaoLoi("Chưa chọn nguyên liệu vào danh sách yêu cầu!.");
                    return;
                }

                //Xử lý lưu phiếu yêu cầu xuất nguyên liệu
                if (xuatNL == null)
                    xuatNL = new YC_XUAT_NGUYEN_LIEU();
                xuatNL.MaNV = nhanVien.MaNhanVien;
                xuatNL.NgayLap = dtPickerNgayLap.Value.Date;



                xuatNL.MaYCXuatNL = YC_XUAT_NGUYEN_LIEU.ThemYCXuatNL(xuatNL);
                if (xuatNL.MaYCXuatNL == -1)
                {
                    OnThongBaoLoi("Có lỗi xảy ra trong quá trình thực hiện, vui lòng thử lại!.");
                    return;
                }

                //xử lý lưu chi tiết phiếu yêu cầu xuất nguyên liệu
                int numError = 0;
               
                foreach (CT_YC_XUAT_NGUYEN_LIEU ctycNL in ctxNLList)
                {
                    ctycNL.MaYCXuatNguyenLieu = xuatNL.MaYCXuatNL;
                    ctycNL.MaYCXuatNguyenLieu = CT_YC_XUAT_NGUYEN_LIEU.ThemCTYCNL(ctycNL);

                    if (ctycNL.MaYCXuatNguyenLieu == -1)
                        numError++;

                }

                //thông báo lỗi
                if (numError > 0)
                    OnThongBaoLoi("Có lỗi xảy, không thêm được " + numError + " chi tiết yêu cầu xuất nguyên liệu!.");
                if (numError == 0)
                    OnThongBaoLoi("Đã lưu thành công danh sách yêu cầu nguyên liệu");




            
            }
            catch (Exception ex)
            {
                OnThongBaoLoi(ex.Message);
            }
        }
        #endregion

        
        
        

        

        


    }
}
